Virtual computing allows multiple virtual machines or partitions, each having their own operating system, to run on a host computer. The host computer has a virtualizer program that allows the host computer to emulate the instructions of a virtual machine program; which may have a different computing model than the host computer. The host computer virtualizer program can also virtualize the hardware resources of the host machine for virtual machine use. The virtual machine that is requesting hardware resources such as CPU, memory, I/O and disk space may be called a device consumer or a client with respect to the partition that is providing the resource.
In a virtual machine system, a virtualizer program executing on the operating system software and hardware architecture of the host computer mimics the operation of an entire virtual computer partition. The virtualizer program acts as the interchange between the hardware architecture of the host machine and the instructions transmitted by the software (e.g., operating systems, applications, etc.) running within the emulated virtual machine partition environment. Generally, it is desirable to keep one virtual machine separated from the other virtual machines as well as separated from the host. Separation or isolation of one virtual machine from another is useful to segregate errors and faults such that one virtual machine fault does not affect another virtual machine. Yet, in some configurations, it is desirable to have one virtual machine access host resources available to a second virtual machine. However there are challenges to realizing such a scheme.
In some computer software applications on host computers, the system software drivers associated with a resource device communicate with the device to determine capacity and features. The software communicating with a device may have the ability to query the capacity and features of the device, but the device does not have the ability to alert the software if these features or capabilities change. Also, there is no protocol in the software and hardware's communication that allow for a guaranteed minimum level of service or contract in dealing with capacity and features. The lack of a fully interactive agreement between hardware and software can present problems if hardware changes or if software requirements change.
A partitioning environment using emulated devices has similar problems as the physical hardware environment of a host computer since the virtualized devices have already been defined by a physical device specification. One aspect of this problem is that as hardware gets more complex, there arises a desire for a more interactive method of capacity and feature negotiating between the hardware and software. This is especially true in a partitioning system for several reasons.
Computer resource providers may have to service multiple virtual machine partitions which share a single physical device. If the software in a resource consuming partition requires an added amount of performance, then the over-use of the computer resource by other partitions can leave one or more virtual partition resource consumers or clients unable to fulfill their requirements.
If the capacity or the features of a given computer resource change after partitioned resource consumers or clients have been initiated, there is no mechanism for altering the allocation of resources without restating either or both of the virtual machine resource client or the host resource provider.
Thus, there is a need for a system or method to provide a more flexible approach to the allocation of computer resources to accommodate changing requirements and capabilities. The present invention addresses the aforementioned needs and solves them with additional advantages as expressed herein.